package com.example.review.SQLite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

import androidx.annotation.Nullable;

public class MyDatabaseHelper extends SQLiteOpenHelper {

    private Context mContext;

    //把建表语句定义成了一个字符串常量
    public static final String CREATE_BOOK = "create table Book ("
            + "id integer primary key autoincrement, "
            + "author text, "
            + "price real, "
            + "pages integer, "
            + "name text)";

    public static final String CREATE_CATEGORY = "create table Category ("
            + "id integer primary key autoincrement, "
            + "category_name text, "
            + "category_code integer)";

    /**
     * 一般使用这个构造方法
     * @param context 上下文
     * @param name 数据库名字
     * @param factory 参数允 许我们在查询数据的时候返回一个自定义的Cursor，一般都是传入null 。
     * @param version 表示当前 数据库的版本号，可用于对数据库进行升级操作
     */
    public MyDatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        mContext=context;
    }


    /**
     * 实现以下两个抽象方法
     */
    @Override
    //创建数据库
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        //执行这条建表语句
        sqLiteDatabase.execSQL(CREATE_BOOK);
        sqLiteDatabase.execSQL(CREATE_CATEGORY);
        Toast.makeText(mContext, "建表成功", Toast.LENGTH_SHORT).show();
    }

    @Override
    //升级数据库
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        sqLiteDatabase.execSQL("drop table if exists Book");
        sqLiteDatabase.execSQL("drop table if exists Category");
        onCreate(sqLiteDatabase);
    }
}
